์ž‘์„ฑ: 2026-03-04 04:03:38์ˆ˜์ •: 2026-03-04 04:03:38

OAuth 2.0 ์†Œ์…œ ๋กœ๊ทธ์ธ ์—ฐ๋™ํ•˜๊ธฐ: ๊ตฌ๊ธ€, ์นด์นด์˜ค๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ„ํŽธ ์ธ์ฆ

๋ณต์žกํ•œ ํšŒ์›๊ฐ€์ž… ์ ˆ์ฐจ๋Š” ์‚ฌ์šฉ์ž ์ดํƒˆ์˜ ์ฃผ๋œ ์›์ธ์ž…๋‹ˆ๋‹ค. OAuth 2.0์„ ์ด์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ ๊ฐ€์ž…ํ•œ ๊ตฌ๊ธ€, ์นด์นด์˜ค, ๋„ค์ด๋ฒ„ ๊ณ„์ •์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์šฐ๋ฆฌ ์„œ๋น„์Šค์— ๋กœ๊ทธ์ธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


1. OAuth 2.0์˜ ํ•ต์‹ฌ ์—ญํ• ์ž

  • Resource Owner: ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž (๋‚˜).
  • Client: ์šฐ๋ฆฌ ์„œ๋น„์Šค (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜).
  • Resource Server: ๊ตฌ๊ธ€, ์นด์นด์˜ค ๋“ฑ ์ •๋ณด๋ฅผ ๊ฐ€์ง„ ์„œ๋ฒ„.
  • Authorization Server: ์ธ์ฆ์„ ๋‹ด๋‹นํ•˜๊ณ  Access Token์„ ๋ฐœ๊ธ‰ํ•˜๋Š” ์„œ๋ฒ„.

2. Spring Boot OAuth2 Client ์„ค์ •

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” spring-boot-starter-oauth2-client๋ฅผ ํ†ตํ•ด ๋งค์šฐ ์‰ฌ์šด ์—ฐ๋™์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

โ‘  ์˜์กด์„ฑ ์ถ”๊ฐ€

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

โ‘ก ์„ค์ • (application.yml)

๊ตฌ๊ธ€ ๊ฐœ๋ฐœ์ž ์ฝ˜์†”์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ ID์™€ Secret์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: YOUR_CLIENT_ID
            client-secret: YOUR_CLIENT_SECRET
            scope:
              - email
              - profile

3. ๊ตฌํ˜„ ๋ฐฉ์‹ (CustomOAuth2UserService)

๋กœ๊ทธ์ธ ์„ฑ๊ณต ํ›„ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์šฐ๋ฆฌ DB์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ๋กœ์ง์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค๋ฅผ ์ปค์Šคํ…€ํ•ฉ๋‹ˆ๋‹ค.

@Service
public class CustomOAuth2UserService implements OAuth2UserService<OAuth2UserRequest, OAuth2User> {
    @Override
    public OAuth2User loadUser(OAuth2UserRequest userRequest) {
        // 1. ๊ตฌ๊ธ€/์นด์นด์˜ค๋กœ๋ถ€ํ„ฐ ์œ ์ € ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
        // 2. ์šฐ๋ฆฌ ์„œ๋น„์Šค DB์— ์—†์œผ๋ฉด ์ž๋™ ๊ฐ€์ž… ์ฒ˜๋ฆฌ
        // 3. ๊ถŒํ•œ ๋ถ€์—ฌ ํ›„ ์œ ์ € ๊ฐ์ฒด ๋ฐ˜ํ™˜
    }
}

4. ์™œ OAuth 2.0์ธ๊ฐ€?

  1. ๋ณด์•ˆ์„ฑ: ์šฐ๋ฆฌ ์„œ๋น„์Šค๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง์ ‘ ์•Œ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  2. ์‹ ๋ขฐ๋„: ๋Œ€ํ˜• ํ”Œ๋žซํผ์˜ ์ธ์ฆ์„ ๋นŒ๋ ค ์“ฐ๋ฏ€๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ ๋ขฐ๋ฅผ ์ค๋‹ˆ๋‹ค.
  3. ๋งˆ์ผ€ํŒ… ํ™œ์šฉ: ๋™์˜ํ•˜์— ์ด๋ฉ”์ผ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„ ๋งˆ์ผ€ํŒ…์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ๊ฒฐ๋ก 

์†Œ์…œ ๋กœ๊ทธ์ธ์€ ์ด์ œ ์„ ํƒ์ด ์•„๋‹Œ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. Spring Security์™€ OAuth2 Client ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ํ”„๋กœํ† ์ฝœ ์ดํ•ด ์—†์ด๋„ ๊ฐ•๋ ฅํ•œ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.